The present invention relates to video encoding systems and methods thereof.
Video Compression schemes enable video content to be sent in encoded form, minimizing the amount of data that needs to be transmitted. New compression specifications are constantly being developed as the demand for higher coding efficiency increases.
Multimedia/Video data are usually transmitted as a series of frames, wherein each frame comprises a top field and a bottom field, which may be in interlaced or progressive form. Each frame is divided into a plurality of basic encoding units known as macroblocks that respectively cover a specific rectangular picture area of a frame. A row or several rows of macroblocks are typically called a slice, wherein a slice is a larger area of the frame that can be coded independently.
The H.264/AVC (Advanced Video Coding) standard is one of the newest video compression standards on the market. This standard uses intra prediction when encoding a current macroblock. Intra prediction means utilizing other macroblock information of the same frame to encode a current macroblock. In the H.264/AVC standard, intra prediction always occurs in the spatial domain, i.e. macroblocks above and to the left of a current macroblock are utilized to encode the current macroblock. Encoding takes place in a raster scan order from the top-left macroblock to the bottom-right macroblock.
Please refer to FIG. 1. FIG. 1 is a diagram illustrating a portion of a video frame 100 comprising a plurality of macroblocks. In FIG. 1 the macroblock units are 16×16 pixels for non-MBAFF (macroblock-based adaptive frame/field) coding and are 16×32 pixels for MBAFF coding, but these are merely examples. If macroblock unit MBU5 is a current macroblock unit to be encoded, then information from MBU0, MBU1, MBU2, and MBU4 must be used. If macroblock unit MBU6 is the current macroblock unit to be encoded, then information from MBU1, MBU2, MBU3, and MBU5 must be used. In other words, a current macroblock unit requires information from a top left macroblock unit, a top macroblock unit, a top right macroblock unit, and an adjacent macroblock unit.
Each macroblock unit has a plurality of information types associated with it that can be utilized for encoding subsequent macroblock units, such as luminance information, chrominance information, motion vectors, motion vector differences etc. Encoders utilize a buffer for storing these information types. Please refer to FIG. 2 and FIG. 1 together. FIG. 2 is a diagram of a buffer 200 of a first related art encoding system. This buffer may be a DRAM, but this is merely one example. A first space 210 in the buffer 200 stores all first information types of the plurality of macroblock units, a second space 220 stores all second information types of the macroblock units, a third space 230 stores all third information types of the macroblock units, and so on. This separating of the information types in the buffer 200 can create long delays during buffer access operations. If MBU5 is the current macroblock unit to be encoded, then MBU0, MBU1, and MBU2 associated information types all need to be accessed. In simpler video compression schemes, only a few information types are associated with each macroblock unit, however, in a standard such as H.264/AVC there are twenty-two information types associated with each macroblock unit. An encoding procedure of MBU5 could therefore require up to twenty-two discontinuous accesses of the buffer 200 for a corresponding macroblock unit being referenced.
In order to minimize the number of buffer access operations another related art encoding method utilizes parallel buffers. Please refer to FIG. 3. FIG. 3 is a diagram of parallel buffers of a second related art encoding system. First information types are stored in a first buffer 310, second information types are stored in a second buffer 320, third information types are stored in a third buffer 330, etc. Although parallel access of information types can be achieved, this scheme will require twenty-two parallel buffers, thereby adding to the overall cost and complexity of the encoding system.